Yolov5如何训练自定义的数据集,以及使用GPU训练,涵盖报错解决

您所在的位置:网站首页 yolov5 valpy怎么调 Yolov5如何训练自定义的数据集,以及使用GPU训练,涵盖报错解决

Yolov5如何训练自定义的数据集,以及使用GPU训练,涵盖报错解决

2024-06-15 17:19| 来源: 网络整理| 查看: 265

本文主要讲述了Yolov5如何训练自定义的数据集,以及使用GPU训练,涵盖报错解决,案例是检测图片中是否有救生圈。 最后的效果图大致如下:

效果图1效果图2

life_buoy.jpg

0.jpg

前言

系列文章

1、详细讲述Yolov5从下载、配置及如何使用GPU运行

2、Labelimg标注自己的数据集,及如何划分训练集和验证集,应用于Yolov5

上一篇文章中,已经介绍了该如何标注自己的数据集,以及该如何给他们分类,接下来的话,就是根据我们已经标注好的数据集来进行训练啦。

将我们之前划分好的数据集放入项目中:

image.png

补充:通过文件夹将数据集复制放进去的,pycharm可以索引的更快,不然会卡很久。

一、修改配置文件

我们需要指定数据集的位置,首先就是要修改 coco128.yaml 配置文件

1.1、修改 coco128.yaml 配置文件

我们复制data 文件夹下 coco128.yaml 配置文件,并重命名为 blog_demo.yaml

image.png

1.2、修改 yolov5s.yaml 配置文件

我们复制 models 文件夹下 yolov5s.yaml 配置文件,并重命名为 yolov5s_blog.yaml

image.png

参数的细节可能需要各位朋友自己去了解啦,我这里只是将类别数目修改成和data/blog_demo.yaml文件对应。

二、了解 train.py 参数

此处暂时不做深究,我们当前的任务是跑通整个代码。

主要是了解截图里面部分参数,这主要是因为训练的时候,不同的机器硬件参数不同,能做的事情也不同,所以相应需要调整,尽可能的把性能发挥到极致。

image.png

weigths: 指的是训练好的网络模型,用来初始化网络权重cfg:为configuration的缩写,指的是网络结构,一般对应models文件夹下的xxx.yaml文件data:训练数据路径,一般为data文件夹下的xxx.yaml文件hyp: 训练网络的一些超参数设置,(一般用不到)epochs:设置训练的轮数(自己电脑上一般建议先小一点,测试一下,看跑一轮要多久)batch-size:每次输出给神经网络的图片数,(需要根据自己电脑性能进行调整)img-size:用于分别设置训练集和测试集的大小。两个数字前者为训练集大小,后者为测试集大小rect: 是否采用矩形训练resume: 指定之前训练的网络模型,并继续训练这个模型nosave: 只保留最后一次的网络模型notest:只在最后一次进行测试noautoanchor:是否采用锚点evolve:是否寻找最优参数bucket:这个参数是 yolov5 作者将一些东西放在谷歌云盘,可以进行下载cache-images:是否对图片进行缓存,可以加快训练image-weights:测试过程中,图像的那些测试地方不太好,对这些不太好的地方加权重device:训练网络的设备cpu还是gpumulti-scale:训练过程中对图片进行尺度变换single-cls:训练数据集是单类别还是多类别adam:是否采用adamsync-bn:生效后进行多 GPU 进行分布式训练local_rank:DistributedDataParallel 单机多卡训练,一般不改动workers: 多线程训练project:训练结果保存路径name: 训练结果保存文件名exist-ok: 覆盖掉上一次的结果,不新建训练结果文件quad:在dataloader时采用什么样的方式读取我们的数据linear-lr:用于对学习速率进行调整,默认为 false,含义是通过余弦函数来降低学习率,生效后按照线性的方式去调整学习率save_period:用于记录训练日志信息,int 型,默认为 -1label-smoothing: 对标签进行平滑处理,防止过拟合freeze:冻结哪些层,不去更新训练这几层的参数save-period:训练多少次保存一次网络模型

注意:参数含default的为默认值,可以直接在文件进行修改,那么运行时直接python train.py也可;直接在命令行指定也可以。

含action的一般为'store_true',使用该参数则需要在命令行指定。

三、训练数据集

可以使用命令行,也可以修改train.py代码,我为了方便测试,就直接使用命令行啦

bash

复制代码

python train.py --weights weights/yolov5s.pt --cfg models/yolov5s_blog.yaml --data data/blog_demo.yaml --epochs 100 --batch-size 16 --multi-scale --device 0

接下来就是我的报错踩坑过程啦。

3.1、报错1:AttributeError: module 'numpy' has no attribute 'int'.

错误如下图,这个很好解决,主要是由于 numpy 的版本引起的。我们换个版本即可。

image.png

yolo官方 requirements.txt 指定的 numpy 版本≥1.18.5,当你执行pip install -r requirements.txt命令时,他默认安装为1.24,但是再numpy版本更新时numpy.int在NumPy 1.20中已弃用,在NumPy 1.24中已删除。下面给2个解决方案:

1、重新安装numpy

pip uninstall numpy pip install numpy==1.22 -i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3